package com.yunchao.feature.base.domain.utils

import android.content.Context
import android.widget.ImageView
import com.bumptech.glide.Glide
import com.bumptech.glide.load.engine.DiskCacheStrategy
import com.bumptech.glide.request.RequestOptions
import com.yunchao.feature.base.R

object GlideUtils {

    /**
     * 加载网络图片
     * @param context 上下文
     * @param url 图片的网络地址
     * @param imageView 要显示图片的 ImageView
     */
    fun loadImage(context: Context, url: String, imageView: ImageView) {
        Glide.with(context)
            .load(url)
            .centerCrop()
            .apply(RequestOptions().diskCacheStrategy(DiskCacheStrategy.ALL))
            .into(imageView)
    }

    /**
     * 加载网络图片，支持占位图和错误图
     * @param context 上下文
     * @param url 图片的网络地址
     * @param imageView 要显示图片的 ImageView
     * @param placeholderResId 占位图资源 ID
     * @param errorResId 错误图资源 ID
     */
    fun loadImageWithPlaceHolder(
        context: Context,
        url: String,
        imageView: ImageView,
        placeholderResId: Int = R.drawable.default_image_placeholder,
        errorResId: Int = R.drawable.icon_common_item_img
    ) {
        Glide.with(context)
            .load(url)
            .apply(
                RequestOptions()
                    .placeholder(placeholderResId)
                    .error(errorResId)
                    .diskCacheStrategy(DiskCacheStrategy.ALL)
            )
            .into(imageView)
    }

    /**
     * 加载本地资源图片
     * @param context 上下文
     * @param resourceId 本地资源 ID
     * @param imageView 要显示图片的 ImageView
     */
    fun loadLocalImage(context: Context, resourceId: Int, imageView: ImageView) {
        Glide.with(context)
            .load(resourceId)
            .apply(RequestOptions().diskCacheStrategy(DiskCacheStrategy.ALL))
            .into(imageView)
    }
}